package ar.edu.utn.frsf.tpae.a2012.g05.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;

import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cliente;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cuenta;
import ar.edu.utn.frsf.tpae.a2012.g05.exception.NegocioException;
import ar.edu.utn.frsf.tpae.a2012.g05.facade.HomeBankingFacade;
import ar.edu.utn.frsf.tpae.a2012.g05.util.ServiceLocator;

public class CuentaBean implements Serializable {

	private static final long serialVersionUID = -2979756947473150568L;

	private Cuenta cuenta;
	private Cliente cliente;
	
	private String mensaje;

	private List<Cuenta> listaCuentas;

	@PostConstruct
	public void init() {
		cliente = (Cliente) FacesContext.getCurrentInstance()
				.getExternalContext().getSessionMap().get("cliente");
		listaCuentas = new ArrayList<Cuenta>();
		listar();
	}
	
	public String listar() {
		HomeBankingFacade service = ServiceLocator.getHomeBankingFacade();
		try {
			this.listaCuentas = service.findCuentasCliente(cliente);
		} catch (NegocioException e) {
			this.mensaje = "Hubo un problema para cargar los datos del cliente: " +
					e.getMessage();
		}

		return null;
	}
	
	public String verMovimientos() {
		FacesContext.getCurrentInstance().getExternalContext()
				.getSessionMap().put("cuenta", cuenta);
		return "toMovimientos";
	}

	// Getters y setters, utilizados por las JSP.
	public Cuenta getCuenta() {
		return cuenta;
	}

	public void setCuenta(Cuenta cuenta) {
		this.cuenta = cuenta;
	}

	public List<Cuenta> getListaCuentas() {
		return listaCuentas;
	}

	public void setListaCuentas(List<Cuenta> listaCuentas) {
		this.listaCuentas = listaCuentas;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}
	
}
